home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- # Note that this script is limited to SCSI drives on integral controllers
- # or raid5 scsi devices
- # (that is, not the jaguar or cougar VME SCSI controllers) and defaults to
- # controller 0.
- # It makes the filesystem on partition 7 (appropriate for option drives),
- # creates the mount directory, and an fstab entry for the drive, then mounts it.
-
- CTLR=0 ID=2 LUN=0 # defaults
- if [ $# -gt 3 ]
- then
- echo "Usage $0 [controller] [disk_number] [lun_number]"
- exit 1
- elif [ $# -eq 3 ]
- then
- CTLR="$1" ID="$2" LUN="$3"
- elif [ $# -eq 2 ]
- then
- CTLR="$1" ID="$2"
- elif [ $# -eq 1 ]
- then
- ID="$1"
- fi
-
- rootdisk="`devnm /|sed 's/[ ].*//`"
- if [ $LUN -gt 0 ]
- then
- DS=dks${CTLR}d${ID}l${LUN}
- else
- DS=dks${CTLR}d${ID}
- fi
- DSK=/dev/dsk/${DS}s7
- RDSK=/dev/rdsk/${DS}s7
-
- if [ $LUN -gt 0 ]
- then
- MOUNTPT=/disk$CTLR$ID$LUN
- else
- MOUNTPT=/disk$CTLR$ID
- fi
-
-
- case "$rootdisk" {
- */dev/dsk/${DS}*)
- echo You may not use this for the system disk, only option disks
- exit 1
- ;;
- }
-
- if [ $LUN -gt 0 ]
- then
- hinv -c disk | grep -s "unit $ID, lun $LUN on SCSI controller $CTLR" > /dev/null 2>&1
- d=$?
- else
- hinv -c disk | grep -s "unit $ID on SCSI controller $CTLR" > /dev/null 2>&1
- d=$?
- fi
-
- hinv -c scsi | grep -s "Optical disk: unit $ID on SCSI controller $CTLR" > /dev/null 2>&1
- o=$?
- if [ $d -ne 0 -a $o -ne 0 ]
- then
- if [ $LUN -gt 0 ]
- then
- echo SCSI disk $ID with lun $LUN not found on controller $CTLR in
- echo hardware inventory. If you are sure that you have the right SCSI
- echo ID, be sure that the disk is attached and powered up when the
- echo system is booted.
- else
- echo SCSI disk $ID not found on controller $CTLR in hardware inventory
- echo If you are sure that you have the right SCSI ID, be sure that the
- echo disk is attached and powered up when the system is booted.
- fi
- exit 1
- fi
-
- if [ ! -c /dev/rdsk/${DS}vh ]
- then
-
- if [ $LUN -gt 0 ]
- then
- echo "No volume header device (/dev/rdsk/${DS}vh) found, for disk $ID"
- echo with lun $LUN on controller $CTLR. You may need to run the
- echo following commands to create the device files:
- else
- echo "No volume header device (/dev/rdsk/${DS}vh) found, for disk $ID"
- echo on controller $CTLR. You may need to run the following commands to
- echo create the device files:
- fi
- echo "\tcd /dev; ./MAKEDEV disks"
- exit 1
- fi
-
- if prtvtoc /dev/rdsk/${DS}vh > /dev/null 2>&1
- then :
- else
- if [ $LUN -gt 0 ]
- then
- echo SCSI disk $ID with lun $LUN on controller $CTLR does not appear
- echo to be initialized with a Silicon Graphics volume header. You may
- echo need to use \"fx\" to initialize it.
- else
- echo SCSI disk $ID on controller $CTLR does not appear to be initialized
- echo with a Silicon Graphics volume header. You may need to use
- echo \"fx\" to initialize it.
- fi
- exit 1
- fi
-
- if [ $LUN -gt 0 ]
- then
- echo "\nAdding SCSI disk $ID with lun $LUN on controller $CTLR"
- else
- echo "\nAdding SCSI disk $ID on controller $CTLR"
- fi
-
- /etc/fsstat $DSK > /dev/null 2>&1
- s7=$?
- /etc/fsstat /dev/dsk/${DS}s6 > /dev/null 2>&1
- s6=$?
- /etc/fsstat /dev/dsk/${DS}s0 > /dev/null 2>&1
- s0=$?
- if [ $s7 -ne 3 -o $s6 -ne 3 -o $s0 -ne 3 ]
- then
- echo "\007SCSI disk $ID appears to have a valid filesystem, overwrite it? (n)\c"
- read answer
- case "$answer" {
- y|Y|yes|Yes|YES) ;;
- *)
- if [ $LUN -gt 0 ]
- then
- echo Disk $ID with lun $LUN on controller $CTLR not added, previous data preserved
- else
- echo Disk $ID with lun $LUN on controller $CTLR not added, previous data preserved
- fi
- exit 1;;
- }
- fi
-
- # unmount it by disk name, in case it is mounted on a different mount pt.
- umount $DSK > /dev/null 2>&1
-
- # make the new filesystem; raw device is much faster
- mkfs $RDSK > /dev/null 2>&1
- if [ $? -ne 0 ]
- then
- if [ $LUN -gt 0 ]
- then
- echo Unable to create a filesystem on SCSI disk $ID with lun $LUN on controller $CTLR
- else
- echo Unable to create a filesystem on SCSI disk $ID on controller $CTLR
- fi
- exit 1
- fi
-
- # create directory
- if [ ! -d $MOUNTPT ]
- then
- rm -f $MOUNTPT
- mkdir $MOUNTPT
- if [ ! -d $MOUNTPT ]
- then
- echo Can not make mount directory $MOUNTPT; exit 1
- fi
- fi
-
- # add the entry to /etc/fstab (ignore commented out lines!)
- # make sure that the mount point matches also; if it was mounted
- # as something else before, the 2nd mount attempt on next boot
- # will at least print an error message
- egrep -s "^$DSK[ ][ ]*$MOUNTPT[ ]" /etc/fstab > /dev/null 2>&1
- if [ $? -ne 0 ]
- then
- echo "$DSK $MOUNTPT efs rw,raw=$RDSK 0 0" >> /etc/fstab
- fi
- sync
-
- # label the disk with its directory name
- if [ $LUN -gt 0 ]
- then
- labelit $RDSK disk$CTLR$ID$LUN sgi > /dev/null 2>&1
- else
- labelit $RDSK disk$CTLR$ID sgi > /dev/null 2>&1
- fi
-
- # mount the filesystem
- if mount -v $MOUNTPT
- then echo "\nNew disk ready to use as $MOUNTPT."; df -lik $MOUNTPT; exit 0
- else echo "\007Failed to mount $DSK on $MOUNTPT"; exit 1
- fi
-